package com.webflux.sample.webfluxmain;

import java.time.Duration;
import java.time.temporal.ChronoUnit;
import reactor.core.publisher.Flux;

public class _5_7operator_flatmap {

  public static void main(String[] args) {
    // flatMap和flatMapSequential操作符把流中的每个元素转换成一个流，再把所有流中的元素进行合并。
    // flatMapSequential和flatMap之间的区别与mergeSequential和merge是一样的。
    Duration du1 = Duration.of(100, ChronoUnit.MILLIS);

    // 解析，2 个流，5、10 从 0 开始打印，5 打印完后，10还会跑到9完成打印
    Flux<Long> longFlux = Flux.just(5, 10)
        .flatMap(x -> Flux.interval(Duration.of(x * 10, ChronoUnit.MILLIS), du1).take(x));

    longFlux.toStream()
        .forEach(System.out::println);

  }
}
